//package com.ruoyi.framework.config;
//
//import de.codecentric.boot.admin.server.config.AdminServerProperties;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.security.config.annotation.web.builders.HttpSecurity;
//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
//import org.springframework.security.web.SecurityFilterChain;
//import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
//import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
//
//@Configuration
//public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
//
//    private final String adminContextPath;
//
//    public WebSecurityConfigurer(AdminServerProperties adminServerProperties) {
//        this.adminContextPath = adminServerProperties.getContextPath();
//    }
//
////    @Override
////    protected void configure(HttpSecurity http) throws Exception {
////        // @formatter:off
////        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
////        successHandler.setTargetUrlParameter("redirectTo");
////
////        http.authorizeRequests()
////                .antMatchers(adminContextPath + "/admin/**").permitAll()
////                .antMatchers(adminContextPath + "/assets/**").permitAll()
////                .antMatchers(adminContextPath + "/login").permitAll()
////                .anyRequest().authenticated()
////                .and()
////                .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
////                .logout().logoutUrl(adminContextPath + "/logout").and()
////                .httpBasic().and()
////                .csrf().disable();
////        // @formatter:on
////    }
//
//    @Bean
//    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
//        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
//        successHandler.setTargetUrlParameter("redirectTo");
//        successHandler.setDefaultTargetUrl(adminContextPath + "/");
//        http.authorizeRequests()
//                //1.配置所有静态资源和登录页可以公开访问
//                .antMatchers(adminContextPath + "/admin/**").permitAll()
//                .antMatchers(adminContextPath + "/druid/**").permitAll()
//                .antMatchers(adminContextPath + "/assets/**").permitAll()
//                .antMatchers(adminContextPath + "/login").permitAll()
//                .anyRequest().authenticated()
//                .and()
//                //2.配置登录和登出路径
//                .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
//                .logout().logoutUrl(adminContextPath + "/logout").and()
//                //3.开启http basic支持，admin-client注册时需要使用
//                .httpBasic().and()
//                .csrf()
//                //4.开启基于cookie的csrf保护
//                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
//                //5.忽略这些路径的csrf保护以便admin-client注册
//                .ignoringAntMatchers(
//                        adminContextPath + "/admin/**",
//                        adminContextPath + "/druid/**",
//                        adminContextPath + "/instances",
//                        adminContextPath + "/actuator/**"
//                );
//        return http.build();
//    }
//
//}